package com.qingzhuge.common;

/**
 * @author : zero.xiao
 * @description : 正则表达式
 * @date :2019-05-16 17:04
 * @modified :
 */
public enum RegexType implements IBaseEnum<String> {
    /** 不验证 */
    NONE(null),
    /** 特殊字符 */
    SPECIALCHAR("[a-z]*[A-Z]*\\d*-*_*\\s*"),
    /** 不含中文 */
    NONECHINESE(""),
    /** 身份证号 */
    IDCARD("^([0-9]{17}[0-9Xx])|([0-9]{15})$"),
    /** 年([-./_]月([-./_][日] */
    DATE("[1-9]{4}([-./_]?)(0?[1-9]|1[0-2])([-./_]?)((0?[1-9])|((1|2)[0-9])|30|31)?"),
    /** 强密码 */
    PASSWORD("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,18}$"),
    /** 纯中文 */
    CHINESE("^[\u4E00-\u9FA5]+$"),
    /** 邮箱 */
    EMAIL("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"),
    /** IP */
    IP("^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
            + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$"),
    /** 网址 */
    URL("(http://|ftp://|https://|www){0,1}[^\u4e00-\u9fa5\\s]*?\\.(com|net|cn|me|tw|fr)[^\u4e00-\u9fa5\\s]*"),
    /** 数字 */
    NUMBER("^(-?\\d+)(\\.\\d+)?$"),
    /** 手机号 */
    PHONE("^((1[3,5,8][0-9])|(14[5,7])|(16[6])|(17[0,6,7,8])|(19[7,8,9]))\\d{8}$"),
    /** 电话号 */
    TELEPHONE("^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$");

    private String value;

    RegexType(String value) {
        this.value = value;
    }

    @Override
    public String value() {
        return value;
    }

    public static RegexType get(String name) {
        if (name == null) {
            return null;
        }
        RegexType[] vals = RegexType.values();
        for (RegexType e : vals) {
            boolean b = e.name().equals(name);
            if (b) {
                return RegexType.valueOf(name);
            }
        }
        return null;
    }
}